package com.qf.service.impl;

import com.qf.dao.ProductDao;
import com.qf.dao.impl.PrductDaoImpl;
import com.qf.pojo.PageBean;
import com.qf.pojo.Product;
import com.qf.service.ProductService;

import java.sql.SQLException;
import java.util.List;

/**
 * @author 高圆圆
 * @date 2023/6/2 11:19
 */
public class ProductServiceImpl  implements ProductService {
    /**
     * 获取最新商品列表
     * @return 返回商品列表 限制9条
     */
    @Override
    public List<Product> getNewProducts() {
        try {
            //调用商品数据访问接口
            ProductDao productDao = new PrductDaoImpl() ;
            List<Product> newProducts = productDao.selectnewProducts();
            if(newProducts!=null || newProducts.size()>0){
                return newProducts;
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return null;
    }
    /**
     * 获取热门商品
     * @return 返回商品列表 限制9条
     */

    @Override
    public List<Product> getHotProducts() {
        try {
            //调用商品数据访问接口
            ProductDao productDao = new PrductDaoImpl() ;
            List<Product> hotProducts = productDao.selecthotProducts();
            if(hotProducts!=null || hotProducts.size()>0){
                return hotProducts ;
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return null;
    }

    /**
     * 通过商品获取指定的商品实体
     * @param pid 前端传过来pid
     * @return 返回商品实体
     */
    @Override
    public Product getProduct(String pid) {
        try {
            //调用数据访问接口
            ProductDao productDao  = new PrductDaoImpl() ;
            Product product = productDao.selectProductByPid(pid);
            if(product!=null){
                return product ;
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return null;
    }

    /**
     * 导航条名称点击完成分页商品的获取
     * @param cid  分类id
     * @param currentPage 当前页码
     * @param pageSize   每页显示的条数
     * @return
     */
    @Override
    public PageBean<Product> getProductByPage(String cid, int currentPage, int pageSize) {
        int totalCount = 0;
        List<Product> list = null;

        try {
            //调用ProductDao,商品的数据接口,获取总记录数以及分页的列表数据
            ProductDao productDao = new PrductDaoImpl() ;
            totalCount = productDao.getTotalCount(cid);
            //起始行数
            int start = (currentPage-1)*pageSize ;
            list = productDao.selectProductByPage(cid,start,pageSize);
            if(totalCount >0 && (list!=null || list.size()>0 )){
                //有数据
                return new PageBean<>(currentPage,pageSize,totalCount,list);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return  null ;

    }

    /**
     * 管理员分页查询所有商品
     * @param currentPage  当前页码
     * @param pageSize     每页显示的条数
     * @return  返回分页实体
     */
    @Override
    public PageBean<Product> getAllProductByPage(int currentPage, int pageSize) {
        try {
            ProductDao productDao = new PrductDaoImpl() ; //商品的数据访问接口
            int totalCount = productDao.selectTotalCount();
            List<Product> list = productDao.selectProducts(currentPage,pageSize) ;
            if(totalCount>0 &&(list!=null ||list.size()>0)){
                return new PageBean<>(currentPage,pageSize,totalCount,list);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return  null ;
    }
}
